package com.love.travel.domain;

import java.math.BigDecimal;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.love.common.core.annotation.Excel;
import com.love.common.core.web.domain.BaseEntity;

/**
 * 旅游景点（含地区信息）对象 travel_attraction
 * 
 * @author love
 * @date 2025-10-15
 */
public class TravelAttraction extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 景点ID */
    private Long attractionId;

    /** 景点名称 */
    @Excel(name = "景点名称")
    private String attractionName;

    /** 所属省份ID（关联城市表省份） */
    @Excel(name = "所属省份ID", readConverterExp = "关=联城市表省份")
    private Long provinceId;

    /** 省份名称（如：广东省） */
    @Excel(name = "省份名称", readConverterExp = "如=：广东省")
    private String provinceName;

    /** 所属城市ID（关联现有城市表） */
    @Excel(name = "所属城市ID", readConverterExp = "关=联现有城市表")
    private Long cityId;

    /** 城市名称（如：深圳市） */
    @Excel(name = "城市名称", readConverterExp = "如=：深圳市")
    private String cityName;

    /** 区县名称（如：南山区，非必填） */
    @Excel(name = "区县名称", readConverterExp = "如=：南山区，非必填")
    private String areaName;

    /** 地区拼音（城市/区县拼音，用于排序/搜索） */
    @Excel(name = "地区拼音", readConverterExp = "城=市/区县拼音，用于排序/搜索")
    private String regionPinyin;

    /** 景点等级：0-无 1-A级 2-AA级 3-AAA级 4-AAAA级 5-AAAAA级 */
    @Excel(name = "景点等级：0-无 1-A级 2-AA级 3-AAA级 4-AAAA级 5-AAAAA级")
    private Long attractionLevel;

    /** 景点描述 */
    @Excel(name = "景点描述")
    private String description;

    /** 详细地址（含街道门牌号） */
    @Excel(name = "详细地址", readConverterExp = "含=街道门牌号")
    private String address;

    /** 景点经度（精确坐标） */
    @Excel(name = "景点经度", readConverterExp = "精=确坐标")
    private BigDecimal attractionLongitude;

    /** 景点纬度（精确坐标） */
    @Excel(name = "景点纬度", readConverterExp = "精=确坐标")
    private BigDecimal attractionLatitude;

    /** 门票价格（单位：元） */
    @Excel(name = "门票价格", readConverterExp = "单=位：元")
    private BigDecimal ticketPrice;

    /** 开放时间 */
    @Excel(name = "开放时间")
    private String openingHours;

    /** 联系电话 */
    @Excel(name = "联系电话")
    private String contactPhone;

    /** 主图URL */
    @Excel(name = "主图URL")
    private String image;

    /** 推荐指数（0-5分） */
    @Excel(name = "推荐指数", readConverterExp = "0=-5分")
    private BigDecimal recommendScore;

    /** 所属城市是否热门：0-否 1-是 */
    @Excel(name = "所属城市是否热门：0-否 1-是")
    private Long isHotCity;

    /** 景点是否热门：0-否 1-是 */
    @Excel(name = "景点是否热门：0-否 1-是")
    private Long isHotAttraction;

    /** 是否有效：0-下架 1-正常 */
    @Excel(name = "是否有效：0-下架 1-正常")
    private Long isActive;

    /**
     * 标签ID集合
     */
    private Long[] tagIds;

    public void setAttractionId(Long attractionId) 
    {
        this.attractionId = attractionId;
    }

    public Long getAttractionId() 
    {
        return attractionId;
    }

    public void setAttractionName(String attractionName) 
    {
        this.attractionName = attractionName;
    }

    public String getAttractionName() 
    {
        return attractionName;
    }

    public void setProvinceId(Long provinceId) 
    {
        this.provinceId = provinceId;
    }

    public Long getProvinceId() 
    {
        return provinceId;
    }

    public void setProvinceName(String provinceName) 
    {
        this.provinceName = provinceName;
    }

    public String getProvinceName() 
    {
        return provinceName;
    }

    public void setCityId(Long cityId) 
    {
        this.cityId = cityId;
    }

    public Long getCityId() 
    {
        return cityId;
    }

    public void setCityName(String cityName) 
    {
        this.cityName = cityName;
    }

    public String getCityName() 
    {
        return cityName;
    }

    public void setAreaName(String areaName) 
    {
        this.areaName = areaName;
    }

    public String getAreaName() 
    {
        return areaName;
    }

    public void setRegionPinyin(String regionPinyin) 
    {
        this.regionPinyin = regionPinyin;
    }

    public String getRegionPinyin() 
    {
        return regionPinyin;
    }

    public void setAttractionLevel(Long attractionLevel) 
    {
        this.attractionLevel = attractionLevel;
    }

    public Long getAttractionLevel() 
    {
        return attractionLevel;
    }

    public void setDescription(String description) 
    {
        this.description = description;
    }

    public String getDescription() 
    {
        return description;
    }

    public void setAddress(String address) 
    {
        this.address = address;
    }

    public String getAddress() 
    {
        return address;
    }

    public void setAttractionLongitude(BigDecimal attractionLongitude) 
    {
        this.attractionLongitude = attractionLongitude;
    }

    public BigDecimal getAttractionLongitude() 
    {
        return attractionLongitude;
    }

    public void setAttractionLatitude(BigDecimal attractionLatitude) 
    {
        this.attractionLatitude = attractionLatitude;
    }

    public BigDecimal getAttractionLatitude() 
    {
        return attractionLatitude;
    }

    public void setTicketPrice(BigDecimal ticketPrice) 
    {
        this.ticketPrice = ticketPrice;
    }

    public BigDecimal getTicketPrice() 
    {
        return ticketPrice;
    }

    public void setOpeningHours(String openingHours) 
    {
        this.openingHours = openingHours;
    }

    public String getOpeningHours() 
    {
        return openingHours;
    }

    public void setContactPhone(String contactPhone) 
    {
        this.contactPhone = contactPhone;
    }

    public String getContactPhone() 
    {
        return contactPhone;
    }

    public void setImage(String image) 
    {
        this.image = image;
    }

    public String getImage() 
    {
        return image;
    }

    public void setRecommendScore(BigDecimal recommendScore) 
    {
        this.recommendScore = recommendScore;
    }

    public BigDecimal getRecommendScore() 
    {
        return recommendScore;
    }

    public void setIsHotCity(Long isHotCity) 
    {
        this.isHotCity = isHotCity;
    }

    public Long getIsHotCity() 
    {
        return isHotCity;
    }

    public void setIsHotAttraction(Long isHotAttraction) 
    {
        this.isHotAttraction = isHotAttraction;
    }

    public Long getIsHotAttraction() 
    {
        return isHotAttraction;
    }

    public void setIsActive(Long isActive) 
    {
        this.isActive = isActive;
    }

    public Long getIsActive() 
    {
        return isActive;
    }

    public Long[] getTagIds() {
        return tagIds;
    }

    public void setTagIds(Long[] tagIds) {
        this.tagIds = tagIds;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("attractionId", getAttractionId())
            .append("attractionName", getAttractionName())
            .append("provinceId", getProvinceId())
            .append("provinceName", getProvinceName())
            .append("cityId", getCityId())
            .append("cityName", getCityName())
            .append("areaName", getAreaName())
            .append("regionPinyin", getRegionPinyin())
            .append("attractionLevel", getAttractionLevel())
            .append("description", getDescription())
            .append("address", getAddress())
            .append("attractionLongitude", getAttractionLongitude())
            .append("attractionLatitude", getAttractionLatitude())
            .append("ticketPrice", getTicketPrice())
            .append("openingHours", getOpeningHours())
            .append("contactPhone", getContactPhone())
            .append("image", getImage())
            .append("recommendScore", getRecommendScore())
            .append("isHotCity", getIsHotCity())
            .append("isHotAttraction", getIsHotAttraction())
            .append("isActive", getIsActive())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .append("tagIds", getTagIds())
            .toString();
    }
}
